/**
 * 
 */
package br.com.estrategos.modelo.pessoa;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.MappedSuperclass;
import javax.persistence.OneToOne;

import org.hibernate.annotations.ForeignKey;

import br.com.estrategos.modelo.localidade.EnderecoEntity;
import br.com.estrategos.modelo.seguranca.UsuarioEntity;

/**
 * @author x12259401
 * 
 */

@MappedSuperclass
public abstract class PessoaJuridica {

	@Id
	@GeneratedValue
	@Column(name="idpessoajuridica", unique = true, scale = 20)
	private Long idPessoaJuridica;
	
	@Column(name = "razaosocial", unique = false, scale = 45)
	private String razaoSocial;

	@Column(name = "inscricaoestadual", unique = true, scale = 20)
	private String inscricaoEstadual;

	@Column(name = "cnpj", unique = true, scale = 20)
	private String cnpj;

	@OneToOne(targetEntity = EnderecoEntity.class, fetch = FetchType.LAZY)
	@ForeignKey(name="fk_idendereco")
	@JoinColumn (name = "idendereco", nullable=false)
	private EnderecoEntity endereco;

	@Enumerated(EnumType.STRING)
	@Column(name = "tipopessoa", columnDefinition = "char(1)")
	private Pessoa pessoa;

	private Date dtcadastro;

	@OneToOne(targetEntity = UsuarioEntity.class, fetch = FetchType.LAZY)
	@ForeignKey(name="fk_idusuario")
	@JoinColumn (name = "idusuario", nullable=false)
	private UsuarioEntity idusuario;

	public Long getIdPessoaJuridica() {
		return idPessoaJuridica;
	}

	public void setIdPessoaJuridica(Long idPessoaJuridica) {
		this.idPessoaJuridica = idPessoaJuridica;
	}

	public String getRazaoSocial() {
		return razaoSocial;
	}

	public void setRazaoSocial(String razaoSocial) {
		this.razaoSocial = razaoSocial;
	}

	public String getInscricaoEstadual() {
		return inscricaoEstadual;
	}

	public void setInscricaoEstadual(String inscricaoEstadual) {
		this.inscricaoEstadual = inscricaoEstadual;
	}

	public String getCnpj() {
		return cnpj;
	}

	public void setCnpj(String cnpj) {
		this.cnpj = cnpj;
	}

	public EnderecoEntity getEndereco() {
		return endereco;
	}

	public void setEndereco(EnderecoEntity endereco) {
		this.endereco = endereco;
	}

	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}

	public Date getDtcadastro() {
		return dtcadastro;
	}

	public void setDtcadastro(Date dtcadastro) {
		this.dtcadastro = dtcadastro;
	}

	public UsuarioEntity getIdusuario() {
		return idusuario;
	}

	public void setIdusuario(UsuarioEntity idusuario) {
		this.idusuario = idusuario;
	}
}